home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 428_02 / libsrc / initvid.c < prev    next >
C/C++ Source or Header  |  1994-03-13  |  2KB  |  78 lines

  1. /*
  2. ** initvid.c
  3. **
  4. ** Pictor, Version 1.51, Copyright (c) 1992-94 SoftCircuits
  5. ** Redistributed by permission.
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <dos.h>
  10. #include "pictor.h"
  11.  
  12.  
  13. /*
  14. ** declare global video variables
  15. */
  16. int _PL_segment = COLOR_SEG;
  17. int _PL_offset = 0x0000;
  18. int _PL_color = 0x07;
  19. int _PL_snowcheck = FALSE;
  20. int _PL_rows = 25;
  21. int _PL_columns = 80;
  22. int _PL_mode = 3;
  23. int _PL_page = 0;
  24. int _PL_colorsupport = FALSE;
  25. int (*_PL_helpfunc)() = NULL;
  26. char *_PL_helpcontext = NULL;
  27.  
  28.  
  29. /*
  30. ** Initializes video variables.
  31. */
  32. void initvideo(void)
  33. {
  34.     union REGS regs;
  35.  
  36.     /* get miscellaneous data */
  37.     regs.h.ah = 0x0F;
  38.     int86(0x10,®s,®s);
  39.     _PL_mode = (int)regs.h.al;
  40.     _PL_page = (int)regs.h.bh;
  41.     _PL_columns = (int)regs.h.ah;
  42.  
  43.     /* determine color or mono emulation */
  44.     int86(0x11,®s,®s);
  45.     _PL_colorsupport = ((regs.x.ax & 0x30) == 0x30) ? FALSE : TRUE;
  46.  
  47.     /* get number of text rows */
  48.     regs.h.ah = 0x12;
  49.     regs.h.bl = 0x10;
  50.     int86(0x10,®s,®s);
  51.  
  52.     if(regs.h.bl == 0x10 || _PL_colorsupport == (int)regs.h.bh) {
  53.         /*
  54.         ** Function 0x12, subfunction 0x10 was not supported
  55.         ** or EGA/VGA was not the active display. Assume 25
  56.         ** rows, and set snow checking if color is supported.
  57.         */
  58.         _PL_rows = 25;
  59.         _PL_snowcheck = (_PL_colorsupport) ? TRUE : FALSE;
  60.     }
  61.     else {
  62.         /*
  63.         ** Function 0x12, subfunction 0x10 was supported and
  64.         ** the EGA/VGA is the active display. Get the number
  65.         ** of textrows and disable snow checking on non-CGAs.
  66.         */
  67.         regs.x.ax = 0x1130;
  68.         int86(0x10,®s,®s);
  69.         _PL_rows = ((int)regs.h.dl + 1);
  70.         _PL_snowcheck = FALSE;
  71.     }
  72.  
  73.     /* initialize screen address */
  74.     _PL_segment = (_PL_colorsupport) ? COLOR_SEG : MONO_SEG;
  75.     _PL_offset = 0x0000;
  76.  
  77. } /* initvideo */
  78.